#ifndef __CANVAS_H__
#define __CANVAS_H__

#include "Prerequisite.h"

namespace RTRT {
    
    class CanvasConfig
    {
    public:
        CanvasConfig(size_t width, size_t height, size_t bpp)
            : m_width(width), m_height(height), m_bitsPerPixel(bpp) {}
        
        // Read configuration from file
        int readConfig(const String& configFile) {}
        
        int getWidth() {
            return m_width;
        }
        
        int getHeight() {
            return m_height;
        }
        
        int getBitsPerPixel() {
            return m_bitsPerPixel;
        }
        
    private:
        size_t m_width;
        size_t m_height;
        size_t m_bitsPerPixel;
    };
    
    
    /** Abstract Canvas class
     *  Represents a canvas on witch the image will be rendered
     */
    class Canvas
    {
    public:
                
        virtual int create() = 0;
        virtual int destroy() = 0;
        virtual int display() = 0;
        
    protected:
        CanvasConfig *m_canvasCfg;
        PixelBuffer *m_pixelBuffer;
    };
}


#endif